FHIRPath
API
evaluate
Returns a JS object/primitive based on the evaluation.
evaluate(
expression: string,
ctx: unknown,
options?: Options
): NonNullable<unknown>[]
evaluateWithMeta
Returns a @iguhealth/meta-value singular value which contains data along with metadata about the evaluation.
function evaluateWithMeta(
expression: string,
ctx: unknown,
options?: Options,
): MetaValueSingular<NonNullable<unknown>>[];
Arguments
| name | type | description |
|---|---|---|
| expression | string | FHIRPath expression to evaluate. |
| ctx | unknown | The context which the fhirpath is being evaluated from (sets $this context). |
| options | Object | Includes variables and metadata deriviation functions. |
| options.variables | Object | Function | If an object is Record<variableName, variableValue> else (variableName)=> variableValue. |
| options.meta | Object | MetaInformation used to zip metadata with value. Used in type functions and operators. |
| options.meta.type | string | Root type for ctx. |
| options.meta.getSD | (fhir_version: FHIRVersion, type: string) => StructureDefinition | Returns a StructureDefinition based on type passed in. |
Usage
import * as fhirpath from "@iguhealth/fhirpath";
// Default returns javascript object.
expect(fhirpath.evaluate("4 + 5", {})).toEqual([9]);
expect(fhirpath.evaluate("$this.test + 2 * 4", { test: 4 })).toEqual([12]);
// Evaluation with metavalue return (returns value in addition to meta information.)
expect(
evaluateWithMeta(
"$this.name",
{
resourceType: "Patient",
name: [{ given: ["bob"], family: "jameson" }],
},
{
meta: {
type: "Patient",
getSD: (fhirVersion, type: code) => {
const foundSD = sds.find((sd) => sd.type === type);
return foundSD;
},
},
},
).map((v) => v.meta()?.type),
).toEqual(["HumanName"]);
Operations supported
| Operation | Description | Supported |
|---|---|---|
| + (addition) | Concatenate strings or add values if numeric. | true |
| - (subtraction) | Subtracts the right operand from the left operand. | true |
| as type specifier | Returns left operand if value is of type specified. | true |
| is(type : type specifier) | Filters left operand based on type specifier. | true |
| * (multiplication) | Multiplies both arguments. | true |
| / (division) | Divides the left operand by the right operand | true |
| | (union collections) | Merge the two collections into a single collection | true |
| = (Equals) | Returns true if the left collection is equal to the right collection | true |
| != (Not Equals) | Converse operator of equals returns true if left collection is not equal to right collection | true |
Supported Functions
| Name | Description | Supported |
|---|---|---|
| empty | Returns true if the input collection is empty () and false otherwise. | true |
| exists | Returns true if the collection has any elements, and false otherwise. | true |
| all | Returns true if for every element in the input collection, criteria evaluates to true. | true |
| allTrue | Takes a collection of Boolean values and returns true if all the items are true. | true |
| anyTrue | Takes a collection of Boolean values and returns true if any of the items are true. | true |
| allFalse | Takes a collection of Boolean values and returns true if all the items are false. | true |
| anyFalse | Takes a collection of Boolean values and returns true if any of the items are false. | true |
| subsetOf | Returns true if all items in the input collection are members of the collection passed in. | true |
| supersetOf | Returns true if all items in the collection passed as the other argument are members of the input collection. | true |
| count | Returns the integer count of the number of items in the input collection. | true |
| distinct | Returns a collection containing only the unique items in the input collection. | true |
| isDistinct | Returns true if all the items in the input collection are distinct. | true |
| where | Returns a collection containing only those elements in the input collection based on where expression. | true |
| select | Evaluates the projection expression for each item in the input collection. | true |
| repeat | A version of select that will repeat the projection and add it to the output collection. | true |
| ofType | Returns a collection that contains all items in the input collection that are of the given type. | true |
| as | Returns filter same as ofType used for backwards compatibility. | true |